<?php
class UsuarioSessaoFoxsis extends sfBasicSecurityUser
{
    protected $arPerfis;
    private $security;
    /**
     * Recebe array com os nomes dos perfis como valores
     */
    function setCredentials($ar) 
    {
        foreach($ar as $nome) {
            $this->addCredential($nome);
        }
    }


    public function canAccess($module, $action) 
    {
        require(
            sfContext::getInstance()
    		->getConfigCache()->checkConfig(
            'modules/'.$module.'/config/security.yml', true)
        );

        ## verifica se é seguro e o usuário não esta logado
        if (isset($this->security[$action]['is_secure']) &&
            $this->security[$action]['is_secure'] &&
            !$this->isAuthenticated()) 
        {
            return false;
        }
        else if (isset($this->security['all']['is_secure']) &&
                 $this->security['all']['is_secure'] &&
                 !$this->isAuthenticated())
        {
            return false;
        }

        if (isset($this->security[$action]['credentials'])) 
        {
            $credentials = $this->security[$action]['credentials'];
        }
        else if (isset($this->security['all']['credentials']))
        {
            $credentials = $this->security['all']['credentials'];
        }
        else 
        {
            $credentials = null;
        }
        if ($credentials === null) 
        {
            return true;
        }
        return $this->hasCredential($credentials);
    }
}